const crypto = require("../utils/crypto");
const moment = require("moment");
module.exports = (app) => {
  return async (ctx, next) => {
    await next();
    const { utils } = ctx;
    if (ctx.status === 200) {
      let etag;
      const data = ctx.body.data;
      if (utils.getType(data) == "string") {
        etag = crypto.md5(data);
      } else if (["object", "array"].includes(utils.getType(data))) {
        etag = crypto.md5(JSON.stringify(data));
      }
      console.log("etag:", etag, ctx.path);
      if (etag) {
        const reqEtag = ctx.get("if-none-match");
        // 强制让请求无缓存；
        if (reqEtag !== etag) {
          ctx.cacheControl = { noCache: true };
        }
        ctx.set({
          etag,
        });
      }
    }
  };
};
